Data recorded to a magnetic disk, optical disk, or other such recording medium is conventionally recorded with parity bits or other redundant bits added to enable correction of reading errors occurring in the data during reproduction. While this enables error correction processing to be applied to the reproduced data, demand has grown in recent years for more robust error correction capabilities. One method of improving the error correction capability is to increase the number of redundant bits added to the data. Increasing the number of redundant bits is not particularly desirable, however, because of the reduced recording density this implies. One method of improving the error correction capability without also increasing the size of the error correction code is to increase the size of the data unit to which error correction processing is applied. For example, one data block may comprise plural sectors, and the data block is used as the error correction processing unit.
FIG. 18 is used to describe the data format of the data block conventionally used as the processing unit for error correction processing.
Each data block comprises 32 sectors, an attribute line, and a parity block. Each sector comprises four lines; to each sector line are written 129 code words identified as D(i,0)-D(i,128), each code word equivalent to one byte of data, and sixteen parity code words P(i,0)-P(i,15) corresponding to the data bytes. Note that "i" represents the line number in the data block. Lines 0-3 are assigned to sector 1, lines 4-7 to sector 2, . . . and lines 124-127 to sector 32. Each sector thus has a 516 byte capacity, including 512 bytes of user data and 4 bytes of CRC code data.
Line 128 is the attribute line to which the block attributes and the attributes of each sector in the block are recorded by data bytes D(128,0)-D(128,128). Parity words P(128,0)-P(128,15) for data bytes D(128,0)-D(128,128) are also recorded to line 128.
As a result, 129 code words of data D(0,j)-D(128,j) (where 0.ltoreq.j.ltoreq.128), and 129 code words of parity data P(0,k)-P(128,k) (where 0.ltoreq.k.ltoreq.15), are thus written columnwise to the data block.
Sixteen code words of parity data Q(0,j)-Q(15,j) for the columnwise data words D(0,j)-D(128,J), and 16 code words of parity data Q(0,m)-Q(15,m) (where 129.ltoreq.m.ltoreq.144) for the columnwise parity words P(0,k)-P(128,k), are written to the parity block.
An address is assigned to each data block containing the code words and parity words arrayed as described above, and is written to a particular location on the recording medium.
However, because the address is only written to the beginning of the data blocks thus formatted, and an address is not added to each sector, access and search times both increase as the block size increases.
More specifically, if data reading starts from some midpoint in a block, it is not possible to determine where in what block data reading started. It is therefore necessary to always start reading from the beginning of the data block, making it necessary to wait until the address at the beginning of the block is recognized when accessing any particular block.
Because the address can only be determined when reading starts at the beginning of a block, the average time required for an address to be read increases as the block size increases. This makes searches take longer.
While it is possible to add a frame number to each frame as a means of reducing access time, the code word must be lengthened to express all frame numbers, and the recording density of the recording medium drops because these code words must also be added to each frame. In addition, these frame numbers cannot be used for any other function.